package com.bzkj.basicinfo.domain.warehouse.dto;

import java.util.List;

/**
 * 追溯码信息DTO
 * 用于存储分级的追溯码信息
 * 
 * @author lixinyu
 * @date 2025-06-23
 */
public class TraceCodeInfo {
    
    /** 药品标识（一级码前7位） */
    private String drugIdentifier;
    
    /** 一级码列表 */
    private List<String> level1Codes;
    
    /** 二级码列表 */
    private List<String> level2Codes;
    
    /** 三级码列表 */
    private List<String> level3Codes;
    
    /** 其他级别码列表 */
    private List<String> otherLevelCodes;
    
    public TraceCodeInfo() {
    }
    
    public TraceCodeInfo(String drugIdentifier, List<String> level1Codes, List<String> level2Codes, List<String> level3Codes, List<String> otherLevelCodes) {
        this.drugIdentifier = drugIdentifier;
        this.level1Codes = level1Codes;
        this.level2Codes = level2Codes;
        this.level3Codes = level3Codes;
        this.otherLevelCodes = otherLevelCodes;
    }
    
    public String getDrugIdentifier() {
        return drugIdentifier;
    }
    
    public void setDrugIdentifier(String drugIdentifier) {
        this.drugIdentifier = drugIdentifier;
    }
    
    public List<String> getLevel1Codes() {
        return level1Codes;
    }
    
    public void setLevel1Codes(List<String> level1Codes) {
        this.level1Codes = level1Codes;
    }
    
    public List<String> getLevel2Codes() {
        return level2Codes;
    }
    
    public void setLevel2Codes(List<String> level2Codes) {
        this.level2Codes = level2Codes;
    }
    
    public List<String> getLevel3Codes() {
        return level3Codes;
    }
    
    public void setLevel3Codes(List<String> level3Codes) {
        this.level3Codes = level3Codes;
    }
    
    public List<String> getOtherLevelCodes() {
        return otherLevelCodes;
    }
    
    public void setOtherLevelCodes(List<String> otherLevelCodes) {
        this.otherLevelCodes = otherLevelCodes;
    }
    
    /**
     * 获取一级码字符串（逗号分隔）
     */
    public String getLevel1CodesString() {
        if (level1Codes == null || level1Codes.isEmpty()) {
            return "";
        }
        return String.join("，", level1Codes);
    }
    
    /**
     * 获取二级码字符串（逗号分隔）
     */
    public String getLevel2CodesString() {
        if (level2Codes == null || level2Codes.isEmpty()) {
            return "";
        }
        return String.join("，", level2Codes);
    }
    
    /**
     * 获取三级码字符串（逗号分隔）
     */
    public String getLevel3CodesString() {
        if (level3Codes == null || level3Codes.isEmpty()) {
            return "";
        }
        return String.join("，", level3Codes);
    }
    
    /**
     * 获取其他级别码字符串（逗号分隔）
     */
    public String getOtherLevelCodesString() {
        if (otherLevelCodes == null || otherLevelCodes.isEmpty()) {
            return "";
        }
        return String.join("，", otherLevelCodes);
    }

    /**
     * 获取所有级别码的统计信息
     */
    public String getCodeLevelSummary() {
        StringBuilder summary = new StringBuilder();

        if (level1Codes != null && !level1Codes.isEmpty()) {
            summary.append("一级码:").append(level1Codes.size()).append("个 ");
        }

        if (level2Codes != null && !level2Codes.isEmpty()) {
            summary.append("二级码:").append(level2Codes.size()).append("个 ");
        }

        if (level3Codes != null && !level3Codes.isEmpty()) {
            summary.append("三级码:").append(level3Codes.size()).append("个 ");
        }

        if (otherLevelCodes != null && !otherLevelCodes.isEmpty()) {
            summary.append("其他级别码:").append(otherLevelCodes.size()).append("个");
        }

        return summary.toString().trim();
    }
}
